package com.example.calculadora;

import com.example.practica_calculadora.R;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity implements OnClickListener {
	EditText ed1;
	Button cero, uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve;
	Button sumar, restar, igual, borrar, dividir, multiplicar, punto;
	String aux1 = "", aux2 = "";
	double num1 = 0, num2= 0;
	String operacion = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		cero = (Button) findViewById(R.id.cero);
		cero.setOnClickListener(this);
		uno = (Button) findViewById(R.id.uno);
		uno.setOnClickListener(this);
		dos = (Button) findViewById(R.id.dos);
		dos.setOnClickListener(this);
		tres = (Button) findViewById(R.id.tres);
		tres.setOnClickListener(this);
		cuatro = (Button) findViewById(R.id.cuatro);
		cuatro.setOnClickListener(this);
		cinco = (Button) findViewById(R.id.cinco);
		cinco.setOnClickListener(this);
		seis = (Button) findViewById(R.id.seis);
		seis.setOnClickListener(this);
		siete = (Button) findViewById(R.id.siete);
		siete.setOnClickListener(this);
		ocho = (Button) findViewById(R.id.ocho);
		ocho.setOnClickListener(this);
		nueve = (Button) findViewById(R.id.nueve);
		nueve.setOnClickListener(this);
		sumar = (Button) findViewById(R.id.sumar);
		sumar.setOnClickListener(this);
		restar = (Button) findViewById(R.id.restar);
		restar.setOnClickListener(this);
		igual = (Button) findViewById(R.id.igual);
		igual.setOnClickListener(this);
		borrar = (Button) findViewById(R.id.borrar);
		borrar.setOnClickListener(this);
		dividir = (Button) findViewById(R.id.dividir);
		dividir.setOnClickListener(this);
		multiplicar = (Button) findViewById(R.id.multiplicar);
		multiplicar.setOnClickListener(this);
		punto = (Button) findViewById(R.id.punto);
		punto.setOnClickListener(this);
		ed1 = (EditText) findViewById(R.id.texto);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public void onClick(View v) {

		Button aux = (Button) v;
		String boton = (String) aux.getText();
		if (!boton.equalsIgnoreCase("+") && !boton.equalsIgnoreCase("-")&& !boton.equalsIgnoreCase("/")&& !boton.equalsIgnoreCase("*")&& !boton.equalsIgnoreCase("=")&& !boton.equalsIgnoreCase("C")) {
			if (this.operacion == null && num1 == 0) {
				this.aux1 += aux.getText();
				this.ed1.setText(aux1);
			} else if(this.operacion != null){
				this.aux2 +=  aux.getText();
				this.ed1.setText(aux2);
			}
		} else if (!boton.equalsIgnoreCase("=")&& !boton.equalsIgnoreCase("C")) {
			if (operacion == null) {
				operacion = boton;
				 if(num1 == 0) num1 = (Double) Double.parseDouble(aux1);
			} else {
				double resultado = 0;
				num2 = (Double) Double.parseDouble(aux2);

				resultado = operacion(num1, num2, operacion);
				ed1.setText("" + resultado);
				num1 = resultado;
				num2 = 0;
				aux2 = "";
				operacion = boton;
			}
		} else {
			if (boton.equalsIgnoreCase("C")) {
				num1 = 0;
				num2 = 0;
				aux1 = "";
				aux2 = "";
				operacion = null;
				ed1.setText(" ");
			} else if (boton.equalsIgnoreCase("=")) {
				double res = 0;
				num2 = (Double) Double.parseDouble(aux2);
				res = operacion(num1, num2, operacion);
				ed1.setText(res+"");
				num1 = res;
				num2 = 0;
				aux2 = "";
				operacion = null;
			}
		}
	}

	public static double operacion(double num1, double num2,
			String operacion) {
		double resultado = 0;
		if (operacion.equalsIgnoreCase("+")) {
			resultado = num1 + num2;
		} else if (operacion.equalsIgnoreCase("-")) {
			resultado = num1 - num2;
		} else if (operacion.equalsIgnoreCase("*")) {
			resultado = num1 * num2;
		} else if (operacion.equalsIgnoreCase("/")) {
			resultado = num1 / num2;
		}
		return resultado;
	}

}
